package com.baidu.iit.pxp.model;

import java.util.ArrayList;
import java.util.List;

/**
 * User: huangweili
 * Date: 14-4-30
 * Time: 下午3:17
 */
public class ServiceTask extends Task {

    public static final String MAIL_TASK = "mail";

    protected String implementation;
    protected String implementationType;
    protected String resultVariableName;
    protected String type;
    protected String operationRef;
    protected String extensionId;
    protected List<FieldExtension> fieldExtensions = new ArrayList<FieldExtension>();
    protected List<CustomProperty> customProperties = new ArrayList<CustomProperty>();

    public String getImplementation() {
        return implementation;
    }
    public void setImplementation(String implementation) {
        this.implementation = implementation;
    }
    public String getImplementationType() {
        return implementationType;
    }
    public void setImplementationType(String implementationType) {
        this.implementationType = implementationType;
    }
    public String getResultVariableName() {
        return resultVariableName;
    }
    public void setResultVariableName(String resultVariableName) {
        this.resultVariableName = resultVariableName;
    }
    public String getType() {
        return type;
    }
    public void setType(String type) {
        this.type = type;
    }
    public List<FieldExtension> getFieldExtensions() {
        return fieldExtensions;
    }
    public void setFieldExtensions(List<FieldExtension> fieldExtensions) {
        this.fieldExtensions = fieldExtensions;
    }
    public List<CustomProperty> getCustomProperties() {
        return customProperties;
    }
    public void setCustomProperties(List<CustomProperty> customProperties) {
        this.customProperties = customProperties;
    }
    public String getOperationRef() {
        return operationRef;
    }
    public void setOperationRef(String operationRef) {
        this.operationRef = operationRef;
    }
    public String getExtensionId() {
        return extensionId;
    }
    public void setExtensionId(String extensionId) {
        this.extensionId = extensionId;
    }
    public boolean isExtended() {
        return extensionId != null && !extensionId.isEmpty();
    }

    public ServiceTask clone() {
        ServiceTask clone = new ServiceTask();
        clone.setValues(this);
        return clone;
    }

    public void setValues(ServiceTask otherElement) {
        super.setValues(otherElement);
        setImplementation(otherElement.getImplementation());
        setImplementationType(otherElement.getImplementationType());
        setResultVariableName(otherElement.getResultVariableName());
        setType(otherElement.getType());
        setOperationRef(otherElement.getOperationRef());
        setExtensionId(otherElement.getExtensionId());

        fieldExtensions = new ArrayList<FieldExtension>();
        if (otherElement.getFieldExtensions() != null && otherElement.getFieldExtensions().size() > 0) {
            for (FieldExtension extension : otherElement.getFieldExtensions()) {
                fieldExtensions.add(extension.clone());
            }
        }

        customProperties = new ArrayList<CustomProperty>();
        if (otherElement.getCustomProperties() != null && otherElement.getCustomProperties().size() > 0) {
            for (CustomProperty property : otherElement.getCustomProperties()) {
                customProperties.add(property.clone());
            }
        }
    }
}
